[bits 32]

section .text
global switch_to

switch_to:
    push esi
    push edi
    push ebx
    push ebp

    mov eax, [esp+20]   ; 栈顶参数 cur 放到eax
    mov [eax], esp      ; 保存栈顶指针 esp 到 cur 的地址，cur 结构体第一个字段就是kstack

    mov eax, [esp+24]   ; 栈第2个参数 next 
    mov esp, [eax]      ; next 的 kstack 字段赋值给 esp， 接下去执行 next

    pop ebp
    pop ebx
    pop edi
    pop esi
    
    ret








